package com.guigu.www.service.imp;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.guigu.www.mapper.DModuleDetailsMapper;
import com.guigu.www.mapper.DModuleMapper;
import com.guigu.www.mapper.FileMapper;
import com.guigu.www.mapper.ModuleMapper;
import com.guigu.www.pojo.File;
import com.guigu.www.pojo.Module;
import com.guigu.www.pojo.ModuleDetails;
import com.guigu.www.pojo.PageVo;
import com.guigu.www.service.ModuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ModuleServiceImpl extends ServiceImpl<ModuleMapper,Module> implements ModuleService {

    @Autowired
    private ModuleMapper moduleMapper;

    @Autowired
    private DModuleDetailsMapper dModuleDetailsMapper;

    @Autowired
    private IdUtils idUtils;

    @Autowired
    private FileMapper fileMapper;

    @Override
    public PageVo<Module> moduleupdate(Module module, int pagenum, int pagesize) {
        Page<Module> page=new Page<>(pagenum,pagesize);
        //设置查询条件
        QueryWrapper<Module> queryWrapper=new QueryWrapper<>();

        if (StringUtils.isNotBlank(module.getFirstkindname())){
            queryWrapper.eq("FIRST_KIND_NAME",module.getFirstkindname());
        }
        if(StringUtils.isNotBlank(module.getSecondkindname())){
            queryWrapper.eq("SECOND_KIND_NAME",module.getSecondkindname());
        }
        if(StringUtils.isNotBlank(module.getThirdkindname())){
            queryWrapper.eq("THIRD_KIND_NAME",module.getThirdkindname());
        }
        if(StringUtils.isNotBlank(module.getChecktag())){
            queryWrapper.eq("CHECK_TAG",module.getChecktag());
        }

        //根据以设计物料组成审核通过
        queryWrapper.eq("CHECK_TAG","S001-1");

        this.page(page,queryWrapper);

        PageVo<Module> pageVo=new PageVo<>();
        pageVo.setRows(page.getRecords());
        pageVo.setTotal(page.getTotal());
        return pageVo;
    }

    @Override
    public boolean AddModuleAndBatchModuleDetails(Module module) {

        //设置流水号
        module.setDesignid(idUtils.getDesignDesignid(module));
        double costPriceSum1=0;

        int i=1;
        for (ModuleDetails moduledetail : module.getModuledetails()) {
            //设置物料序号
            moduledetail.setDetailsnumber(i);
            //设置物料总成本
            costPriceSum1+=Double.parseDouble(moduledetail.getCostprice());
            i++;
        }

        //double转string
        module.setCostpricesum((String.valueOf(costPriceSum1)));

        System.out.println(module);

        //添加产品物料组成表
        int a=moduleMapper.AddModule(module);

        //批量添加产品物料组成明细
        int b=moduleMapper.BatchModuleDetails(module);

        boolean batch=false;
        if(b==module.getModuledetails().size()){
            batch=true;
        }

        if(batch==true && a==1){
            //根据产品编号查询产品档案表的物料组成标志
            fileMapper.UpdateFileDesignModuleTag(module.getProductid());
            return true;
        }else{
            return false;
        }
    }

    @Override
    public Module QueryModuleById(int id) {

        QueryWrapper<Module> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("id",id);
        Module module = moduleMapper.selectOne(queryWrapper);

        QueryWrapper<ModuleDetails> queryWrapper1=new QueryWrapper<>();
        queryWrapper1.eq("parent_Id",id);
        List<ModuleDetails> moduleDetails = dModuleDetailsMapper.selectList(queryWrapper1);

        module.setModuledetails(moduleDetails);

        return module;
    }

    @Override
    public boolean UpdateModuleByDesignId(Module module) {

        //根据设计编号查询物料组成的编号
        int id=moduleMapper.QueryModuleBydesignId(module.getDesignid());

        module.setId(id);

        //删除明细表里原来的物料
        moduleMapper.DelModuleDetailsByParentId(id);

        int i=1;
        for (ModuleDetails moduledetail : module.getModuledetails()) {
            moduledetail.setDetailsnumber(i);
            i++;
        }

        //重新添加明细新的物料
        moduleMapper.BatchModuleDetails(module);

        //修改产品物料组成
        int a=moduleMapper.UpdateModuleByDesignId(module);

        return a==1?true:false;
    }

    //点击审核物料组成设计单
    @Override
    public boolean shenheModule(Module module) {
        int f;
        if (module.getChecktag().equals("S001-1")) {//审核通过
            f = moduleMapper.shenheModule(module);
        } else {
            ModuleDetails moduleDetails = new ModuleDetails();
            moduleDetails.setParentid(module.getId());
            //审核不通过，不通过还要重新制定物料组成 所以要删除原有的物料组成
            dModuleDetailsMapper.deleteModuleDetails(moduleDetails);
            //审核不通过 将产品物料组成(D_MODULE)表CHECK_TAG改为S001-2不通过
            f = moduleMapper.shenheModule2(module);
            //审核不通过 不通过还要重新制定物料组成 所以要将设计标志改为DESIGN_MODULE_TAG W001-0: 未设计
            File file=new File();
            file.setProductid(module.getProductid());
            fileMapper.DESIGN_MODULE_TAGW0010(file);
        }
        return f == 1 ? true : false;
    }
}


